import sympy as sym
import numpy as np


def symtrue(n, *args):
    # SymPy simplified the expr already
    if len(args) == 0: 
        if isinstance(n, int):
            result = np.full((n, n), sym.true)
        elif isinstance(n, list):
            result = np.full(tuple(n), sym.true)
        else:
            raise TypeError("Input type not supported.")
        return result
    else:
        arr = [n]
        for arg in args:
            arr.append(arg)
        return symtrue(arr)


# Test case 1: Input is symbolic expressions
result = np.array([
    [sym.true, sym.true],
    [sym.true, sym.true]
])
assert np.array_equal(symtrue(2), result)

result = np.array([
    [
        [sym.true, sym.true, sym.true],
        [sym.true, sym.true, sym.true]
    ],
    [
        [sym.true, sym.true, sym.true],
        [sym.true, sym.true, sym.true]
    ],
    [
        [sym.true, sym.true, sym.true],
        [sym.true, sym.true, sym.true]
    ]
])
assert np.array_equal(symtrue([3,2,3]), result)

result = np.array([
    [
        [sym.true, sym.true, sym.true],
        [sym.true, sym.true, sym.true]
    ],
    [
        [sym.true, sym.true, sym.true],
        [sym.true, sym.true, sym.true]
    ],
    [
        [sym.true, sym.true, sym.true],
        [sym.true, sym.true, sym.true]
    ]
])
assert np.array_equal(symtrue(3,2,3), result)
